
public class Test {
    public static void main(String[] args) {
        String str = "hello world hello LiHua" ;
        String[] result = str.split(" ",2) ;
        for(String s: result) {
            System.out.println(s);
        }
    }


    public static void main13(String[] args) {
        String str = "hello world hello LiHua" ;
        String[] result = str.split(" ") ; //按照空格拆分
        for(String s: result) {
            System.out.println(s);
        }
    }
    public static void main12(String[] args) {
        String str = "ILoveChiina ILoveFriend";
        System.out.println(str.replaceAll("I", "You"));
        System.out.println(str.replaceFirst("I", "You"));
    }
    public static void main11(String[] args) {
        String str = String.format("%d-%d-%d", 2022, 9,12);
        System.out.println(str);
    }
    public static void main10(String[] args) {
        String str = "abcdef";
        // 字符串转数组
        char[] ch = str.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            //输出字符串的每一个字符
            System.out.print(ch[i]);
        }
        System.out.println();
        // 数组转字符串
        String s2 = new String(ch);
        System.out.println(s2);
    }

    public static void main9(String[] args) {
        String s1 = "abc";
        String s2 = "ABC";
        //将s1转成大写输出
        System.out.println(s1.toUpperCase());
        //将s2转成小写输出
        System.out.println(s2.toLowerCase());
    }

    public static void main8(String[] args) {
        //数字转字符串
        String s1 = String.valueOf(1234);
        String s2 = String.valueOf(12.34);
        String s3 = String.valueOf(true);
        String s4 = String.valueOf(false);
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
        System.out.println(s4);
        System.out.println("=================================");
        //字符串转数字
        //注意：Integer、Double等是Java中的包装类型，这个后面会讲到
        int data1 = Integer.parseInt("1234");
        double data2 = Double.parseDouble("12.34");
        System.out.println(data1);
        System.out.println(data2);
    }

    public static void main7(String[] args) {
        String s = "abcdefghijkopqrstovwxyz";
        System.out.println(s.charAt(3)); //d
        System.out.println(s.indexOf('c')); //2
        System.out.println(s.indexOf('c', 10)); //-1
        System.out.println(s.indexOf("bbb")); //-1
        System.out.println(s.indexOf("bbb", 10)); //-1
        System.out.println(s.lastIndexOf('c')); //2
        System.out.println(s.lastIndexOf('c', 10)); //2
        System.out.println(s.lastIndexOf("bbb")); //-1
        System.out.println(s.lastIndexOf("bbb", 10));//-1
    }

    public static void main6(String[] args) {
        String s1 = new String("abc");
        String s2 = new String("ac");
        String s3 = new String("ABc");
        String s4 = new String("abcdef");
        System.out.println(s1.compareToIgnoreCase(s2)); // 不同输出字符差值-1
        System.out.println(s1.compareToIgnoreCase(s3)); // 相同输出 0
        System.out.println(s1.compareToIgnoreCase(s4)); // 前k个字符完全相同，输出长度差值 -3
    }
    public static void main5(String[] args) {
        String s1 = new String("abc");
        String s2 = new String("ac");
        String s3 = new String("abc");
        String s4 = new String("abcdef");
        System.out.println(s1.compareTo(s2)); // 不同输出字符差值-1
        System.out.println(s1.compareTo(s3)); // 相同输出 0
        System.out.println(s1.compareTo(s4)); // 前k个字符完全相同，输出长度差值 -3
    }
    /*public boolean equals(Object anObject) {
        // 1. 先检测this 和 anObject 是否为同一个对象比较，如果是返回true
        if (this == anObject) {
            return true;
        }

        // 2. 检测anObject是否为String类型的对象，如果是继续比较，否则返回false
        if (anObject instanceof String) {
        // 将anObject向下转型为String类型对象
            String anotherString = (String)anObject;
            int n = value.length;
            // 3. this和anObject两个字符串的长度是否相同，是继续比较，否则返回false
            if (n == anotherString.value.length) {
                char v1[] = value;
                char v2[] = anotherString.value;
                int i = 0;
               // 4. 按照字典序，从前往后逐个字符进行比较
                while (n-- != 0) {
                    if (v1[i] != v2[i])
                        return false;
                    i++;
                }
                return true;
            }
        }

        return false;
    }*/

    public static void main4(String[] args) {
        String s1 = new String("abcdef");
        String s2 = new String("abcdef");
        String s3 = new String("abc");

        // s1、s2、s3引用的是三个不同对象，因此==比较结果全部为false
        System.out.println(s1 == s2); // false
        System.out.println(s1 == s3); // false

        // equals比较：String对象中的逐个字符
        // 虽然s1与s2引用的不是同一个对象，但是两个对象中放置的内容相同，因此输出true
        // s1与s3引用的不是同一个对象，而且两个对象中内容也不同，因此输出false
        System.out.println(s1.equals(s2)); // true
        System.out.println(s1.equals(s3)); // false
    }

    public static void main3(String[] args) {
        int a = 100;
        int b = 200;
        int c = 100;

        // 对于基本类型变量，==比较两个变量中存储的值是否相同
        System.out.println(a == b); // false
        System.out.println(a == c); // true

        // 对于引用类型变量，==比较两个引用变量引用的是否为同一个对象
        String str1 = new String("abcdef");
        String str2 = new String("abcdef");
        String str3 = new String("abc");
        String str4 = str1;
        System.out.println(str1 == str2); // false
        System.out.println(str2 == str3); // false
        System.out.println(str1 == str4); // true
    }

    public static void main2(String[] args) {
        // s1和s2引用的是不同对象 s1和s3引用的是同一对象
        String s1 = new String("hello");
        String s2 = new String("world");
        String s3 = s1;
        System.out.println(s1.length()); // 获取字符串长度---输出5
        System.out.println(s1.isEmpty()); // 如果字符串长度为0，返回true，否则返回false
    }

    public static void main1(String[] args) {
        // 使用常量串构造
        String s1 = "hello world";
        System.out.println(s1);
        // 直接newString对象
        String s2 = new String("hello world");
        System.out.println(s1);
        // 使用字符数组进行构造
        char[] array = {'h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd'};
        String s3 = new String(array);
        System.out.println(s1);
    }
}
